#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "gestion_malade.h"
#define tailleFicheMalade 6

void init_malades(FILE *ficheMals,malade clinique_mal[], int *m)
{
	
	int i=0;
	char c ; 
	ficheMals=fopen("malade.txt","r");
	if (ficheMals != NULL)
		{
	while(fscanf(ficheMals,"%d %c %s %s %ld %s %s",&(clinique_mal[i].num),&c,clinique_mal[i].nom,clinique_mal[i].prenom,&(clinique_mal[i].Id),clinique_mal[i].type_sang,clinique_mal[i].nation)!=EOF)

	{i++;}			
			
		*m=i;
		fclose(ficheMals);
		}
		
	else printf (" lecture impossible de la fiche malades\n") ;
}
void init_file(FILE *ficheMals,malade clinique_mal[], int *m)
{
	
	int i=0;
	char c ; 
	ficheMals=fopen("file_d_attente.txt","r");
	if (ficheMals != NULL)
		{
	while(fscanf(ficheMals,"%d %c %s %s %ld %s %s",&(clinique_mal[i].num),&c,clinique_mal[i].nom,clinique_mal[i].prenom,&(clinique_mal[i].Id),clinique_mal[i].type_sang,clinique_mal[i].nation)!=EOF)

	{i++;}			
		
		*m=i;
		fclose(ficheMals);
	        }
		
	else printf (" lecture impossible de la fiche malades") ;
}

void ajouter_mal(FILE *ficheMals,FILE *filedAtt, malade clinique_mal[],malade c_att[],int *m,int *nf )
{
char NOM[20];
char PRENOM[20];
long int ID;
char TYPE_SANG[5];
char NATION[20];
int j;
int i ;

i=0;
j=0;
	ficheMals=fopen("malade.txt","a+");
		if (ficheMals!=NULL)
		{
			if (*m<tailleFicheMalade) { // const 
		printf ("donner les donnees sur le nouveau malade comme suit : nom prenom type_sang et nation \n");
		scanf("%s %s %s %s",NOM,PRENOM,TYPE_SANG,NATION);
		printf ("un identifiant va etre attribuE au malade automatiquement ...\n"); 
	clinique_mal[*m].Id=30000+((*m)+1); 		
		j=(*m)+1;
		fprintf (ficheMals,"%d : %s %s %ld %s %s",j,NOM,PRENOM,clinique_mal[*m].Id,TYPE_SANG,NATION);
		strcpy(clinique_mal[j-1].nom,NOM);
		strcpy(clinique_mal[j-1].prenom,PRENOM); 
		strcpy(clinique_mal[j-1].type_sang,TYPE_SANG); 
		strcpy(clinique_mal[j-1].nation,NATION); 
		(*m)++;
		fclose(ficheMals);

		                    }else {

					   printf("la clinique est pleine, veuillez ajouter le malade dans la fiche de la file d'attente\n");
					   filedAtt=fopen("file_d_attente.txt","a");
						if(filedAtt!=NULL)
							{printf ("un identifiant va etre attribuE au malade automatiquement ...\n"); 
							c_att[*nf].Id=30000+((*m)+1); 
							printf ("donner les donnees sur le nouveau malade comme suit : nom prenom type_sang et nation \n"); 				
							j=(*nf)+1;
							scanf("%s %s %s %s",c_att[(*nf)].nom,c_att[(*nf)].prenom,c_att[(*nf)].type_sang,c_att[(*nf)].nation);
							fprintf (filedAtt,"%d : %s %s %ld %s %s \n",j,c_att[*nf].nom,c_att[*nf].prenom,c_att[*nf].Id,c_att[*nf].type_sang,c_att[*nf].nation);
							fclose(filedAtt);
							(*nf)++;

							}
						else printf("le fichier file_d_attente.txt ne peut pas s'ouvrire\n");
					  }
		}
		else printf ("le fichier malade.txt ne peut pas s ouvrir\n");
}

void supprimer_mal(FILE *filedAtt,FILE *ficheMals,malade clinique_mal[],malade c_att[],int *m,int *nf,long int IDM)
{
int j ;
int i=0;
int k=0;
int b=0; 

	while(i<*m)
		{
		if (clinique_mal[i].Id==IDM)
		
		{b=1; 
		for (k=i;k<(*m)-1;k++)
		
		{
		clinique_mal[k]=clinique_mal[k+1];
		}
		
		(*m)=(*m)-1;		
		}
		
		i++;}
		

				 ficheMals=fopen("malade.txt","w+");
					if((b==1)&&(ficheMals!=NULL))
						{
							for(i=0;i<(*m);i++)
								{

								fprintf(ficheMals,"%d : %s %s %ld %s %s \n",i+1,clinique_mal[i].nom,clinique_mal[i].prenom,clinique_mal[i].Id,clinique_mal[i].type_sang,clinique_mal[i].nation);
						
								}


							if(c_att[0].Id!=0)
								{
								fprintf(ficheMals,"%d : %s %s %ld %s %s\n",*m+1,c_att[0].nom,c_att[0].prenom,c_att[0].Id,c_att[0].type_sang,c_att[0].nation);
								}


				
							fclose(ficheMals);

		
							for (k=0;k<(*nf)-1;k++)
		
							{
							c_att[k]=c_att[k+1];
							}
		
							(*nf)=(*nf)-1;		
		

				 			filedAtt=fopen("file_d_attente.txt","w+");
							if(filedAtt!=NULL)
							{
							for(i=0;i<(*nf);i++)
								{

								fprintf(filedAtt,"%d : %s %s %ld %s %s \n",i+1,c_att[i].nom,c_att[i].prenom,c_att[i].Id,c_att[i].type_sang,c_att[i].nation);
						
								}
							fclose(filedAtt); 
					

							}else printf ("le fichier file_d_attente.txt ne peut pas s/'ouvrir \n"); 
						}else if (b==1) {printf ("le fichier malade.txt ne peux pas s/'ouvrir\n"); }
						else printf ("mauvais choix de l'Id\n"); 
					

}



long int recherche_mal_Id(malade clinique_mal[],int m)
{
long int ID;
int i;

printf ("donner l ID du malade  \n");
scanf ("%ld",&ID);

	for (i=0;i<m;i++) {
		if (ID == clinique_mal[i].Id){
		return(ID);
			  }
}
}

void recherche_mal_nat(malade clinique_mal[],int m)
{
char NATION[15];
int i ;


printf ("donner la nation (en miniscules) du malade que vous voulez afficher \n");
scanf ("%s",NATION);
	for (i=0;i<m;i++) {
		if (strcmp(NATION,clinique_mal[i].nation)==0){

		afficher_mal(clinique_mal[i]);
			  }

}
}

void recherche_mal_nom(malade clinique_mal[], int m )
{char NOM[20];
int i ;

printf ("donner le nom (en miniscules) du malade que vous voulez afficher \n");
scanf ("%s",NOM);
	for (i=0;i<m;i++) {
		if (strcmp(NOM,clinique_mal[i].nom)==0){
		afficher_mal(clinique_mal[i]);
			  }

}
}

void afficher_mal(malade x)
{
		printf("nom: %s \n",x.nom);
		printf("prenom: %s \n",x.prenom);
		printf("Id: %ld \n",x.Id) ;
		printf("type sang : %s \n",x.type_sang);
		printf(" nation : %s \n \n",x.nation) ;


}



